package main

import (
	"flag"
	"fmt"
	"os"

	"supershare/backend/models"

	"github.com/beego/beego/v2/client/orm"
	_ "github.com/beego/beego/v2/server/web"
)

// 预定义的API权限列表
var predefinedPermissions = []struct {
	Identifier  string
	Name        string
	Description string
	Module      string
	Type        string
	Method      string
}{
	// 角色模块
	{"/api/v1/role", "角色列表", "查看角色列表", "role", "api", "GET"},
	{"/api/v1/role", "创建角色", "创建新的角色", "role", "api", "POST"},
	{"/api/v1/role/:id", "更新角色", "更新角色信息", "role", "api", "PUT"},
	{"/api/v1/role/:id", "删除角色", "删除角色", "role", "api", "DELETE"},

	// 权限模块
	{"/api/v1/permission", "权限列表", "查看权限列表", "permission", "api", "GET"},
	{"/api/v1/permission", "创建权限", "创建新的权限", "permission", "api", "POST"},
	{"/api/v1/permission/:id", "更新权限", "更新权限信息", "permission", "api", "PUT"},
	{"/api/v1/permission/:id", "删除权限", "删除权限", "permission", "api", "DELETE"},
	{"/api/v1/permission/batch/parent", "批量更新父级权限", "批量更新父级权限", "permission", "api", "POST"},
	// 操作日志模块
	{"/api/v1/log", "操作日志列表", "查看操作日志列表", "log", "api", "GET"},
	// 用户模块
	{"/api/v1/user", "用户列表", "查看用户列表", "user", "api", "GET"},
	{"/api/v1/user/:id", "用户详情", "查看用户详情", "user", "api", "GET"},
	{"/api/v1/user", "创建用户", "创建新的用户", "user", "api", "POST"},
	{"/api/v1/user/:id", "更新用户", "更新用户信息", "user", "api", "PUT"},
	// franchise模块
	{"/api/v1/franchise", "加盟商列表", "查看加盟商列表", "franchise", "api", "GET"},
	{"/api/v1/franchise", "创建加盟商", "创建新的加盟商", "franchise", "api", "POST"},
	{"/api/v1/franchise/:id", "更新加盟商", "更新加盟商信息", "franchise", "api", "PUT"},
	{"/api/v1/franchise/:id", "删除加盟商", "删除加盟商", "franchise", "api", "DELETE"},
	// 门店管理
	{"/api/v1/store", "门店列表", "查看门店列表", "store", "api", "GET"},
	{"/api/v1/store", "创建门店", "创建新的门店", "store", "api", "POST"},
	{"/api/v1/store/:id", "获取门店详情", "获取门店详情接口", "store", "api", "GET"},
	{"/api/v1/store/:id", "更新门店", "更新门店信息", "store", "api", "PUT"},
	{"/api/v1/store/:id", "删除门店", "删除门店", "store", "api", "DELETE"},
	{"/api/v1/store/time/:id", "获取门店营业时间", "获取门店营业时间", "store", "api", "GET"},
	{"/api/v1/store/time", "更新门店营业时间", "更新门店营业时间", "store", "api", "POST"},
	// 城市管理
	{"/api/v1/city", "城市列表", "查看城市列表", "city", "api", "GET"},
	{"/api/v1/city/all", "所有城市", "获取所有城市", "city", "api", "GET"},
	{"/api/v1/city", "创建城市", "创建新的城市", "city", "api", "POST"},
	{"/api/v1/city/:id", "更新城市", "更新城市信息", "city", "api", "PUT"},
	{"/api/v1/city/:id", "删除城市", "删除城市", "city", "api", "DELETE"},
	//上传文件
	{"/api/v1/upload", "上传文件", "上传文件", "upload", "api", "POST"},
	{"/api/v1/upload/multi", "批量上传文件", "批量上传文件", "upload", "api", "POST"},
	//场地管理
	{"/api/v1/venue", "场地列表", "查看场地列表", "store", "api", "GET"},
	{"/api/v1/venue", "创建场地", "创建新的场地", "store", "api", "POST"},
	{"/api/v1/venue/:id", "获取场地详情", "获取场地详细信息", "store", "api", "GET"},
	{"/api/v1/venue/:id", "更新场地", "更新场地信息", "store", "api", "PUT"},
	{"/api/v1/venue/:id", "删除场地", "删除场地", "store", "api", "DELETE"},
	{"/api/v1/venue/type", "场地列表", "查看场地列表", "store", "api", "GET"},
	{"/api/v1/venue/type", "创建场地", "创建新的场地", "store", "api", "POST"},
	{"/api/v1/venue/batch", "获取批量场地", "获取批量场地", "store", "api", "POST"},
	//场地预约套餐管理
	{"/api/v1/venue/package", "预约套餐列表", "查看预约套餐列表", "store", "api", "GET"},
	{"/api/v1/venue/package", "创建预约套餐", "创建新的预约套餐", "store", "api", "POST"},
	{"/api/v1/venue/package/:id", "获预约套餐详情", "获取预约套餐详细信息", "store", "api", "GET"},
	{"/api/v1/venue/package/:id", "更新预约套餐", "更新预约套餐信息", "store", "api", "PUT"},
	{"/api/v1/venue/package/:id", "删除预约套餐", "删除预约套餐", "store", "api", "DELETE"},
	//小程序管理
	{"/api/v1/miniprogram/config", "获取小程序配置", "小程序配置", "miniprogram", "api", "GET"},
	{"/api/v1/miniprogram/config", "更新小程序配置", "小程序配置", "miniprogram", "api", "PUT"},

	{"/api/v1/miniprogram/content", "获取小程序内容管理", "小程序内容管理", "miniprogram", "api", "GET"},
	{"/api/v1/miniprogram/content", "添加小程序内容管理", "小程序内容管理", "miniprogram", "api", "POST"},
	{"/api/v1/miniprogram/content/:id", "更新小程序内容管理", "小程序内容管理", "miniprogram", "api", "PUT"},
	{"/api/v1/miniprogram/content/:id", "删除小程序内容管理", "小程序内容管理", "miniprogram", "api", "DELETE"},
	{"/api/v1/miniprogram/banner", "获取小程序轮播图片", "小程序轮播图片", "miniprogram", "api", "GET"},
	{"/api/v1/miniprogram/banner", "添加小程序轮播图片", "小程序轮播图片", "miniprogram", "api", "POST"},
	{"/api/v1/miniprogram/banner/:id", "更新小程序轮播图片", "小程序轮播图片", "miniprogram", "api", "PUT"},
	{"/api/v1/miniprogram/banner/:id", "删除小程序轮播图片", "小程序轮播图片", "miniprogram", "api", "DELETE"},
	{"/api/v1/miniprogram/banner/list", "获取公开轮播图列表", "获取小程序前端轮播图列表", "miniprogram", "api", "GET"},

	// 会员管理
	{"/api/v1/member", "会员列表", "查看会员列表", "member", "api", "GET"},
	{"/api/v1/member", "创建会员", "创建新的会员", "member", "api", "POST"},
	{"/api/v1/member/:id", "会员详情", "查看会员详情", "member", "api", "GET"},
	{"/api/v1/member/:id", "更新会员", "更新会员信息", "member", "api", "PUT"},
	{"/api/v1/member/:id", "删除会员", "删除会员", "member", "api", "DELETE"},
	{"/api/v1/member/:id/points", "调整会员积分", "调整会员积分", "member", "api", "PUT"},
	{"/api/v1/member/:id/balance", "调整会员余额", "调整会员余额", "member", "api", "PUT"},
	// 会员积分记录
	{"/api/v1/member/points/log", "积分变动记录", "查看会员积分变动记录", "member", "api", "GET"},
	// 会员余额记录
	{"/api/v1/member/balance/log", "余额变动记录", "查看会员余额变动记录", "member", "api", "GET"},
	// 会员交易记录
	{"/api/v1/member/transaction", "交易记录", "查看会员交易记录", "member", "api", "GET"},
	// 会员等级管理
	{"/api/v1/member/level", "会员等级列表", "查看会员等级列表", "member", "api", "GET"},
	{"/api/v1/member/level", "创建会员等级", "创建新的会员等级", "member", "api", "POST"},
	{"/api/v1/member/level/:id", "会员等级详情", "查看会员等级详情", "member", "api", "GET"},
	{"/api/v1/member/level/:id", "更新会员等级", "更新会员等级", "member", "api", "PUT"},
	{"/api/v1/member/level/:id", "删除会员等级", "删除会员等级", "member", "api", "DELETE"},
	//会员卡
	{"/api/v1/member/card", "会员卡列表", "查看会员卡列表", "member", "api", "GET"},
	{"/api/v1/member/card", "创建会员卡", "创建新的会员卡", "member", "api", "POST"},
	{"/api/v1/member/card/:id", "会员卡详情", "查看会员卡详情", "member", "api", "GET"},
	{"/api/v1/member/card/:id", "更新会员卡", "更新会员卡", "member", "api", "PUT"},
	{"/api/v1/member/card/:id", "删除会员卡", "删除会员卡", "member", "api", "DELETE"},
	//充值管理
	//充值套餐
	{"/api/v1/recharge/package", "充值管理", "查看充值管理", "recharge", "api", "GET"},
	{"/api/v1/recharge/package", "创建充值管理", "创建新的充值管理", "recharge", "api", "POST"},
	{"/api/v1/recharge/package/:id", "获取充值管理", "获取充值管理", "recharge", "api", "GET"},
	{"/api/v1/recharge/package/:id", "更新充值管理", "更新充值管理", "recharge", "api", "PUT"},
	{"/api/v1/recharge/package/:id", "删除充值管理", "删除充值管理", "recharge", "api", "DELETE"},
	//充值记录
	{"/api/v1/recharge/record", "充值记录", "查看充值记录", "recharge", "api", "GET"},
	{"/api/v1/recharge/record", "创建充值记录", "创建新的充值记录", "recharge", "api", "POST"},
	{"/api/v1/recharge/record/:id", "获取充值记录", "获取充值记录", "recharge", "api", "GET"},
	//支付管理
	{"/api/v1/payment/channel", "支付渠道", "查看支付渠道", "payment", "api", "GET"},
	{"/api/v1/payment/channel", "创建支付渠道", "创建新的支付渠道", "payment", "api", "POST"},
	{"/api/v1/payment/channel/:id", "获取支付渠道", "获取支付渠道", "payment", "api", "GET"},
	{"/api/v1/payment/channel/:id", "更新支付渠道", "更新支付渠道", "payment", "api", "PUT"},
	{"/api/v1/payment/channel/:id", "删除支付渠道", "删除支付渠道", "payment", "api", "DELETE"},
	//交易记录查询
	{"/api/v1/payment/transaction", "交易记录查询", "查看交易记录", "payment", "api", "GET"},
	{"/api/v1/payment/transaction/:id", "交易记录详情查询", "交易记录详情查询", "payment", "api", "GET"},
	//退款
	{"/api/v1/payment/refund", "退款管理", "查看退款管理", "payment", "api", "GET"},
	{"/api/v1/payment/refund", "创建退款", "创建新的退款", "payment", "api", "POST"},
	{"/api/v1/payment/refund/:id", "获取退款按详细", "获取退款按详细", "payment", "api", "GET"},
	{"/api/v1/payment/refund/apply", "申请退款", "申请退款", "payment", "api", "POST"},
	{"/api/v1/payment/refund/audit", "审核退款", "审核退款", "payment", "api", "POST"},
	{"/api/v1/payment/refund/member", "获取会员退款记录", "获取会员退款记录", "payment", "api", "GET"},
	//优惠券
	{"/api/v1/coupon", "优惠券管理", "查看优惠券管理", "coupon", "api", "GET"},
	{"/api/v1/coupon", "创建优惠券", "创建新的优惠券", "coupon", "api", "POST"},
	{"/api/v1/coupon/:id", "获取优惠券", "获取优惠券", "coupon", "api", "GET"},
	{"/api/v1/coupon/:id", "更新优惠券", "更新优惠券", "coupon", "api", "PUT"},
	{"/api/v1/coupon/:id", "删除优惠券", "删除优惠券", "coupon", "api", "DELETE"},
	{"/api/v1/coupon/issue/list", "优惠券发放记录", "查看优惠券发放记录", "coupon", "api", "GET"},
	{"/api/v1/coupon/issue", "优惠券发放", "发放优惠券", "coupon", "api", "POST"},
	{"/api/v1/coupon/batch_issue", "优惠券批量发放", "批量发放优惠券", "coupon", "api", "POST"},
	{"/api/v1/coupon/filter_issue", "优惠券条件发放", "按条件发放优惠券", "coupon", "api", "POST"},
	{"/api/v1/coupon/issue/cancel", "取消优惠券", "取消已发放的优惠券", "coupon", "api", "POST"},
	{"/api/v1/groupbuy/verify", "团购券核销", "团购券核销", "groupon", "api", "GET"},
	{"/api/v1/groupbuy/verify/:id", "团购券核销详情", "团购券核销详情", "groupon", "api", "GET"},
	{"/api/v1/groupbuy/verify", "创建核销记录", "创建团购券核销记录", "groupon", "api", "POST"},
	//优惠活动
	{"/api/v1/coupon/activity", "优惠券活动管理", "查看优惠券活动管理", "coupon", "api", "GET"},
	{"/api/v1/coupon/activity", "创建优惠券活动", "创建新的优惠券活动", "coupon", "api", "POST"},
	{"/api/v1/coupon/activity/:id", "获取优惠券活动", "获取优惠券活动", "coupon", "api", "GET"},
	{"/api/v1/coupon/activity/:id", "更新优惠券活动", "更新优惠券活动", "coupon", "api", "PUT"},
	{"/api/v1/coupon/activity/:id", "删除优惠券活动", "删除优惠券活动", "coupon", "api", "DELETE"},
	//团购管理
	//团购活动
	{"/api/v1/groupbuy/activity", "团购活动管理", "查看团购活动管理", "groupon", "api", "GET"},
	{"/api/v1/groupbuy/activity", "创建团购活动", "创建新的团购活动", "groupon", "api", "POST"},
	{"/api/v1/groupbuy/activity/:id", "获取团购活动", "获取团购活动", "groupon", "api", "GET"},
	{"/api/v1/groupbuy/activity/:id", "更新团购活动", "更新团购活动", "groupon", "api", "PUT"},
	{"/api/v1/groupbuy/activity/:id", "删除团购活动", "删除团购活动", "groupon", "api", "DELETE"},
	{"/api/v1/groupbuy/activity/active", "团购活动状态", "团购活动状态", "groupon", "api", "GET"},
	//团购订单
	{"/api/v1/groupbuy/order", "团购订单管理", "查看团购订单管理", "groupon", "api", "GET"},
	{"/api/v1/groupbuy/order", "创建团购订单", "创建新的团购订单", "groupon", "api", "POST"},
	{"/api/v1/groupbuy/order/:id", "获取团购订单", "获取团购订单", "groupon", "api", "GET"},
	{"/api/v1/groupbuy/order/:id", "更新团购订单", "更新团购订单", "groupon", "api", "PUT"},
	{"/api/v1/groupbuy/order/:id", "删除团购订单", "删除团购订单", "groupon", "api", "DELETE"},
	{"/api/v1/groupbuy/order/audit", "团购订单审核", "审核团购订单", "groupon", "api", "POST"},
	{"/api/v1/groupbuy/order/cancel", "团购订单取消", "取消团购订单", "groupon", "api", "POST"},
	//美团管理
	{"/api/v1/meituan", "美团配置", "查看美团配置", "meituan", "api", "GET"},
	{"/api/v1/meituan", "创建美团配置", "创建美团配置", "meituan", "api", "POST"},
	{"/api/v1/meituan/:id", "美团配置详情", "查看美团配置详情", "meituan", "api", "GET"},
	{"/api/v1/meituan/:id", "修改美团配置", "修改美团配置", "meituan", "api", "PUT"},
	{"/api/v1/meituan/:id", "删除美团配置", "删除美团配置", "meituan", "api", "DELETE"},
	{"/api/v1/meituan/order", "获取美团订单列表", "获取美团订单列表", "meituan", "api", "GET"},
	{"/api/v1/meituan/order/:id", "美团订单详情", "查看美团订单详情", "meituan", "api", "GET"},
	{"/api/v1/meituan/order/process", "处理美团订单", "处理美团订单状态", "meituan", "api", "POST"},
	{"/api/v1/meituan/sync/:id", "同步美团订单", "同步美团订单", "meituan", "api", "POST"},

	// 美团团购管理
	{"/api/v1/meituan/group", "美团团购活动列表", "获取美团团购活动列表", "meituan", "api", "GET"},
	{"/api/v1/meituan/group", "创建美团团购活动", "创建美团团购活动", "meituan", "api", "POST"},
	{"/api/v1/meituan/group/:id", "美团团购活动详情", "获取美团团购活动详情", "meituan", "api", "GET"},
	{"/api/v1/meituan/group/:id", "更新美团团购活动", "更新美团团购活动", "meituan", "api", "PUT"},
	{"/api/v1/meituan/group/:id", "删除美团团购活动", "删除美团团购活动", "meituan", "api", "DELETE"},

	// 美团团购订单管理
	{"/api/v1/meituan/group/order", "美团团购订单列表", "获取美团团购订单列表", "meituan", "api", "GET"},
	{"/api/v1/meituan/group/order/:id", "美团团购订单详情", "获取美团团购订单详情", "meituan", "api", "GET"},
	{"/api/v1/meituan/group/order/process", "处理美团团购订单", "处理美团团购订单", "meituan", "api", "POST"},
	{"/api/v1/meituan/group/order/use/:id", "使用美团团购券", "使用美团团购券", "meituan", "api", "POST"},
	{"/api/v1/meituan/group/order/sync", "同步美团团购订单", "同步美团团购订单", "meituan", "api", "POST"},

	//菜单权限数据
	//系统管理
	{"/admin", "系统管理", "系统管理菜单", "admin", "menu", ""},
	{"/admin/roles", "角色管理", "角色管理菜单", "admin", "menu", ""},
	{"/admin/permissions", "权限管理", "权限管理菜单", "admin", "menu", ""},
	{"/admin/logs", "操作日志", "操作日志菜单", "admin", "menu", ""},
	{"/admin/users", "用户管理", "用户管理菜单", "admin", "menu", ""},
	{"/admin/device", "设备管理", "设备管理菜单", "admin", "menu", ""},
	{"/admin/device/list", "设备列表", "设备列表菜单", "admin", "menu", ""},
	{"/admin/device/group", "设备分组", "设备分组管理菜单", "admin", "menu", ""},
	// 加盟商管理
	{"/admin/franchise", "加盟商管理", "加盟商管理菜单", "admin", "menu", ""},
	// 会员管理
	{"/member", "会员管理", "会员管理菜单", "member", "menu", ""},
	{"/member/list", "会员列表", "会员列表菜单", "member", "menu", ""},
	{"/member/points", "积分记录", "会员积分记录菜单", "member", "menu", ""},
	{"/member/balance", "余额记录", "会员余额记录菜单", "member", "menu", ""},
	{"/member/transaction", "交易记录", "会员交易记录菜单", "member", "menu", ""},
	//小程序管理
	{"/miniprogram", "小程序管理", "小程序管理菜单", "miniprogram", "menu", ""},
	{"/miniprogram/config", "小程序配置", "小程序配置菜单", "miniprogram", "menu", ""},
	{"/miniprogram/content", "小程序内容管理", "小程序内容管理菜单", "miniprogram", "menu", ""},
	{"/miniprogram/banner", "小程序轮播图片", "小程序轮播图片菜单", "miniprogram", "menu", ""},
	// 美团管理
	{"/meituan", "美团管理", "美团管理菜单", "meituan", "menu", ""},
	{"/meituan/config", "美团配置", "美团配置菜单", "meituan", "menu", ""},
	{"/meituan/order", "美团订单", "美团订单菜单", "meituan", "menu", ""},
	{"/meituan/group", "团购活动", "美团团购活动菜单", "meituan", "menu", ""},
	{"/meituan/group/order", "团购订单", "美团团购订单菜单", "meituan", "menu", ""},
	//门店管理
	{"/store", "门店管理", "门店管理菜单", "store", "menu", ""},
	{"/store/list", "门店信息管理", "门店信息管理菜单", "store", "menu", ""},
	{"/store/venue", "门店场地管理", "门店场地管理菜单", "store", "menu", ""},
	{"/store/time", "门店营业时间管理", "门店营业时间管理菜单", "store", "menu", ""},
	{"/store/venue_package", "门店场地预约套餐管理", "门店场地预约套餐管理菜单", "store", "menu", ""},

	//按钮权限数据
	//加盟商管理
	{"franchise:create", "添加加盟商按钮", "添加加盟商按钮", "admin", "button", ""},
	{"franchise:update", "编辑加盟商按钮", "编辑加盟商按钮", "admin", "button", ""},
	{"franchise:delete", "删除加盟商按钮", "删除加盟商按钮", "admin", "button", ""},

	//角色管理
	{"role:create", "添加角色按钮", "添加角色按钮", "admin", "button", ""},
	{"role:update", "编辑角色按钮", "编辑角色按钮", "admin", "button", ""},
	{"role:delete", "删除角色按钮", "删除角色按钮", "admin", "button", ""},
	{"role:permission", "分配权限按钮", "分配权限按钮", "admin", "button", ""},
	//权限管理
	{"permission:create", "添加权限按钮", "添加权限按钮", "admin", "button", ""},
	{"permission:update", "编辑权限按钮", "编辑权限按钮", "admin", "button", ""},
	{"permission:delete", "删除权限按钮", "删除权限按钮", "admin", "button", ""},
	//用户管理
	{"user:create", "添加用户按钮", "添加用户按钮", "admin", "button", ""},
	{"user:update", "编辑用户按钮", "编辑用户按钮", "admin", "button", ""},
	{"user:delete", "删除用户按钮", "删除用户按钮", "admin", "button", ""},
	//会员管理
	{"member:create", "添加会员按钮", "添加会员按钮", "member", "button", ""},
	{"member:update", "编辑会员按钮", "编辑会员按钮", "member", "button", ""},
	{"member:delete", "删除会员按钮", "删除会员按钮", "member", "button", ""},
	{"member:points", "调整积分按钮", "调整会员积分按钮", "member", "button", ""},
	{"member:balance", "调整余额按钮", "调整会员余额按钮", "member", "button", ""},
	//门店管理
	//门店信息管理
	{"store:create", "添加门店按钮", "添加门店按钮", "admin", "button", ""},
	{"store:update", "编辑门店按钮", "编辑门店按钮", "admin", "button", ""},
	{"store:delete", "删除门店按钮", "删除门店按钮", "admin", "button", ""},

	//设备管理
	{"device:create", "添加设备按钮", "添加设备按钮", "admin", "button", ""},
	{"device:update", "编辑设备按钮", "编辑设备按钮", "admin", "button", ""},
	{"device:delete", "删除设备按钮", "删除设备按钮", "admin", "button", ""},
	{"device:status", "更新设备状态按钮", "更新设备状态按钮", "admin", "button", ""},

	//设备分组管理
	{"device_group:create", "添加设备分组按钮", "添加设备分组按钮", "admin", "button", ""},
	{"device_group:update", "编辑设备分组按钮", "编辑设备分组按钮", "admin", "button", ""},
	{"device_group:delete", "删除设备分组按钮", "删除设备分组按钮", "admin", "button", ""},
	{"device_group:add_devices", "添加设备到分组按钮", "添加设备到分组按钮", "admin", "button", ""},
	{"device_group:remove_devices", "从分组移除设备按钮", "从分组移除设备按钮", "admin", "button", ""},
	// 团购统计
	{"/api/v1/groupbuy/statistics", "团购统计", "查看团购统计数据", "groupon", "api", "GET"},
	// 订单管理
	{"/api/v1/order", "订单管理", "查看订单管理", "order", "api", "GET"},
	{"/api/v1/order/:id", "订单详情", "查看订单详情", "order", "api", "GET"},
	{"/api/v1/order/status", "更新订单状态", "更新订单状态", "order", "api", "POST"},
	{"/api/v1/order/cancel", "取消订单", "取消订单", "order", "api", "POST"},
	{"/api/v1/order/audit", "审核订单", "审核订单", "order", "api", "POST"},
	{"/api/v1/order/pending", "获取待审核订单", "获取待审核订单", "order", "api", "GET"},
	{"/api/v1/order/statistics", "获取订单统计数据", "获取订单统计数据", "order", "api", "GET"},
	// 在优惠券权限部分添加
	{"/api/v1/coupon/batch", "获取批量优惠券", "获取批量优惠券信息", "coupon", "api", "POST"},

	// 在会员权限部分添加
	{"/api/v1/member/batch", "获取批量会员", "获取批量会员信息", "member", "api", "POST"},

	// 统计模块
	{"/api/v1/statistics/overview", "系统概览统计", "获取系统概览统计数据", "statistics", "api", "GET"},

	// 在用户权限部分添加
	{"/api/v1/user/change_password", "修改密码", "修改用户自身密码", "user", "api", "POST"},

	// 设备管理
	{"/api/v1/device", "设备列表", "查看设备列表", "device", "api", "GET"},
	{"/api/v1/device", "创建设备", "创建新的设备", "device", "api", "POST"},
	{"/api/v1/device/:id", "设备详情", "查看设备详情", "device", "api", "GET"},
	{"/api/v1/device/:id", "更新设备", "更新设备信息", "device", "api", "PUT"},
	{"/api/v1/device/:id", "删除设备", "删除设备", "device", "api", "DELETE"},
	{"/api/v1/device/:id/status", "更新设备状态", "更新设备状态", "device", "api", "PUT"},

	// 设备分组管理
	{"/api/v1/device/group", "设备分组列表", "查看设备分组列表", "device", "api", "GET"},
	{"/api/v1/device/group", "创建设备分组", "创建新的设备分组", "device", "api", "POST"},
	{"/api/v1/device/group/:id", "设备分组详情", "查看设备分组详情", "device", "api", "GET"},
	{"/api/v1/device/group/:id", "更新设备分组", "更新设备分组信息", "device", "api", "PUT"},
	{"/api/v1/device/group/:id", "删除设备分组", "删除设备分组", "device", "api", "DELETE"},
	{"/api/v1/device/group/add_devices", "添加设备到分组", "添加设备到分组", "device", "api", "POST"},
	{"/api/v1/device/group/remove_devices", "从分组移除设备", "从分组移除设备", "device", "api", "POST"},
	{"/api/v1/device/group/devices", "获取分组内设备", "获取分组内的设备列表", "device", "api", "GET"},
	{"/api/v1/device/groups", "获取设备所属分组", "获取设备所属的分组列表", "device", "api", "GET"},

	// 美团管理
	{"meituan:create", "添加美团配置按钮", "添加美团配置按钮", "meituan", "button", ""},
	{"meituan:update", "编辑美团配置按钮", "编辑美团配置按钮", "meituan", "button", ""},
	{"meituan:delete", "删除美团配置按钮", "删除美团配置按钮", "meituan", "button", ""},
	{"meituan:sync", "同步美团订单按钮", "同步美团订单按钮", "meituan", "button", ""},
	{"meituan:process", "处理美团订单按钮", "处理美团订单按钮", "meituan", "button", ""},
	// 美团团购管理
	{"meituan:group:create", "添加团购活动按钮", "添加美团团购活动按钮", "meituan", "button", ""},
	{"meituan:group:update", "编辑团购活动按钮", "编辑美团团购活动按钮", "meituan", "button", ""},
	{"meituan:group:delete", "删除团购活动按钮", "删除美团团购活动按钮", "meituan", "button", ""},
	// 美团团购订单管理
	{"meituan:group:order:sync", "同步团购订单按钮", "同步美团团购订单按钮", "meituan", "button", ""},
	{"meituan:group:order:process", "处理团购订单按钮", "处理美团团购订单按钮", "meituan", "button", ""},
	{"meituan:group:order:use", "使用团购券按钮", "使用美团团购券按钮", "meituan", "button", ""},

	// 抖音管理
	{"/api/v1/douyin", "抖音配置列表", "查看抖音配置列表", "douyin", "api", "GET"},
	{"/api/v1/douyin", "创建抖音配置", "创建抖音配置", "douyin", "api", "POST"},
	{"/api/v1/douyin/:id", "抖音配置详情", "查看抖音配置详情", "douyin", "api", "GET"},
	{"/api/v1/douyin/:id", "修改抖音配置", "修改抖音配置", "douyin", "api", "PUT"},
	{"/api/v1/douyin/:id", "删除抖音配置", "删除抖音配置", "douyin", "api", "DELETE"},
	{"/api/v1/douyin/:id/sync", "同步抖音配置", "同步抖音配置", "douyin", "api", "POST"},

	// 抖音团购活动管理
	{"/api/v1/douyin/group", "抖音团购活动列表", "获取抖音团购活动列表", "douyin", "api", "GET"},
	{"/api/v1/douyin/group", "创建抖音团购活动", "创建抖音团购活动", "douyin", "api", "POST"},
	{"/api/v1/douyin/group/:id", "抖音团购活动详情", "获取抖音团购活动详情", "douyin", "api", "GET"},
	{"/api/v1/douyin/group/:id", "更新抖音团购活动", "更新抖音团购活动", "douyin", "api", "PUT"},
	{"/api/v1/douyin/group/:id", "删除抖音团购活动", "删除抖音团购活动", "douyin", "api", "DELETE"},

	// 抖音团购订单管理
	{"/api/v1/douyin/group/order", "抖音团购订单列表", "获取抖音团购订单列表", "douyin", "api", "GET"},
	{"/api/v1/douyin/group/order/:id", "抖音团购订单详情", "获取抖音团购订单详情", "douyin", "api", "GET"},
	{"/api/v1/douyin/group/order/:id/process", "处理抖音团购订单", "处理抖音团购订单", "douyin", "api", "POST"},
	{"/api/v1/douyin/group/order/:id/use", "使用抖音团购券", "使用抖音团购券", "douyin", "api", "POST"},
	{"/api/v1/douyin/group/order/sync", "同步抖音团购订单", "同步抖音团购订单", "douyin", "api", "POST"},

	// 抖音管理菜单权限
	{"/douyin", "抖音管理", "抖音管理菜单", "douyin", "menu", ""},
	{"/douyin/config", "抖音配置", "抖音配置菜单", "douyin", "menu", ""},
	{"/douyin/group", "团购活动", "抖音团购活动菜单", "douyin", "menu", ""},
	{"/douyin/order", "团购订单", "抖音团购订单菜单", "douyin", "menu", ""},

	// 抖音管理按钮权限
	{"douyin:config:create", "添加抖音配置按钮", "添加抖音配置按钮", "douyin", "button", ""},
	{"douyin:config:update", "编辑抖音配置按钮", "编辑抖音配置按钮", "douyin", "button", ""},
	{"douyin:config:delete", "删除抖音配置按钮", "删除抖音配置按钮", "douyin", "button", ""},
	{"douyin:config:sync", "同步抖音配置按钮", "同步抖音配置按钮", "douyin", "button", ""},
	{"douyin:group:create", "添加抖音团购活动按钮", "添加抖音团购活动按钮", "douyin", "button", ""},
	{"douyin:group:update", "编辑抖音团购活动按钮", "编辑抖音团购活动按钮", "douyin", "button", ""},
	{"douyin:group:delete", "删除抖音团购活动按钮", "删除抖音团购活动按钮", "douyin", "button", ""},
	{"douyin:order:process", "处理抖音团购订单按钮", "处理抖音团购订单按钮", "douyin", "button", ""},
	{"douyin:order:use", "使用抖音团购券按钮", "使用抖音团购券按钮", "douyin", "button", ""},
	{"douyin:order:sync", "同步抖音团购订单按钮", "同步抖音团购订单按钮", "douyin", "button", ""},
}

func main() {
	// 解析命令行参数
	force := flag.Bool("force", false, "强制更新已存在的权限")
	help := flag.Bool("help", false, "显示帮助信息")

	// 解析命令行参数
	flag.Parse()

	// 显示帮助信息
	if *help {
		fmt.Println("初始化接口权限工具")
		fmt.Println("用法: init_permission [选项]")
		flag.PrintDefaults()
		return
	}

	// 初始化权限
	fmt.Println("开始初始化接口权限...")

	// 同步数据库表结构
	fmt.Println("正在同步数据库表结构...")
	// 第一个参数是数据库别名，第二个参数是是否强制更新，第三个参数是是否显示执行的SQL
	err := orm.RunSyncdb("default", false, true)
	if err != nil {
		fmt.Printf("同步数据库表结构失败: %v\n", err)
		os.Exit(1)
	}
	fmt.Println("数据库表结构同步完成")

	// 初始化预定义的权限
	initPredefinedPermissions(*force)

	// 清除权限缓存
	models.ClearAllPermissionCache()

	fmt.Println("接口权限初始化完成")
}

// 初始化预定义的权限
func initPredefinedPermissions(force bool) {
	o := orm.NewOrm()

	// 获取已存在的权限标识符
	existingIdentifiers := make(map[string]bool)
	var permissions []*models.Permission
	_, err := o.QueryTable(new(models.Permission)).All(&permissions)
	if err == nil {
		for _, perm := range permissions {
			k := perm.Identifier + "_" + perm.Type + "_" + perm.Method
			existingIdentifiers[k] = true
		}
	}

	// 初始化计数器
	createdCount := 0
	updatedCount := 0
	skippedCount := 0

	// 遍历预定义的权限
	for _, perm := range predefinedPermissions {
		k := perm.Identifier + "_" + perm.Type + "_" + perm.Method
		// 检查权限是否已存在
		if _, exists := existingIdentifiers[k]; exists && !force {
			// 权限已存在且不强制更新，跳过
			fmt.Printf("跳过已存在的权限: %s %s\n", perm.Identifier, perm.Type)
			skippedCount++
			continue
		}

		// 查找是否已存在该标识符的权限
		existingPerm := &models.Permission{Identifier: perm.Identifier, Type: perm.Type, Method: perm.Method}
		err := o.Read(existingPerm, "identifier", "type", "method")

		if err == nil {
			// 权限已存在，更新
			existingPerm.Name = perm.Name
			existingPerm.Description = perm.Description
			existingPerm.Module = perm.Module
			existingPerm.Type = perm.Type
			existingPerm.Status = 1

			_, err = o.Update(existingPerm)
			if err != nil {
				fmt.Printf("更新权限失败 %s: %v\n", perm.Identifier, err)
				continue
			}

			fmt.Printf("更新权限: %s\n", perm.Identifier)
			updatedCount++
		} else {
			// 创建新权限
			newPerm := &models.Permission{
				Name:        perm.Name,
				Description: perm.Description,
				Module:      perm.Module,
				Type:        perm.Type,
				Identifier:  perm.Identifier,
				Method:      perm.Method,
				ParentId:    0,
				Sort:        0,
				Status:      1,
			}

			_, err = o.Insert(newPerm)
			if err != nil {
				fmt.Printf("创建权限失败 %s: %v\n", perm.Identifier, err)
				continue
			}

			fmt.Printf("创建权限: %s\n", perm.Identifier)
			createdCount++
		}
	}

	// 输出统计信息
	fmt.Printf("权限初始化完成: 创建 %d 个, 更新 %d 个, 跳过 %d 个\n", createdCount, updatedCount, skippedCount)
}
